﻿using CShapDM;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _03调用大漠插件
{
    public partial class Form1 : Form
    {
        CDmSoft dm = new CDmSoft();
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //var x = dm.Ver();
            #region 获取句柄ID
            TextBox.CheckForIllegalCrossThreadCalls = false;//关闭跨线程操作检查
            ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) =>
            {
                while (true)
                {
                    int hwnd = dm.GetMousePointWindow();
                    lblJuBing.Text = hwnd.ToString();
                }
            }), null);		//线程池--鼠标指向获取句柄 
            #endregion

            #region 鼠标指向坐标
            ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) =>
            {
                object objX, objY;
                while (true)
                {
                    int dm_ret = dm.GetCursorPos(out objX, out objY);
                    lblXY.Text = objX.ToString() + "," + objY.ToString();
                }
            }), null);		//线程池--鼠标指向坐标 
            #endregion

            #region 快捷键
            ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) =>
    {
        while (true)
        {
            if (dm.WaitKey(18, 0) + dm.WaitKey(65, 0) == 2)
            {
                txtJuBing.Text = lblJuBing.Text;
            }
        }
    }), null);		//线程池--Alt+A快捷键 
            #endregion
        }
        #region 绑定句柄
        private void button1_Click(object sender, EventArgs e)
        {
            int winNum = Convert.ToInt32(txtJuBing.Text);
            int dm_ret = dm.BindWindow(winNum, "dx2", "normal", "windows", 0);
            if (dm_ret == 1)
            {
                MessageBox.Show("绑定成功!");
            }
        }
        #endregion

        #region 打字
        private void btnType_Click(object sender, EventArgs e)
        {
            ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) =>
            {
                for (int i = 65; i < 91; i++)
                {
                    dm.KeyPress(i);
                    //Thread.Sleep(100);
                }
            }), null);		//线程池--后台打字
        }
        #endregion

        #region 找图
        bool formSearch = true;
        private void btnPic_Click(object sender, EventArgs e)
        {
            if (formSearch)
            {
                Form2 picForm = new Form2();
                formSearch = false;
                picForm.Show();
            }
            else
            {
                object intX, intY;
                int dm_ret = dm.FindPic(0, 0, 2000, 2000, "yuan.bmp", "000000", 0.9, 0, out intX, out intY);
                if (dm_ret != 0)
                {
                    MessageBox.Show("没找到");
                    formSearch = true;
                    return;
                }
                string msg = String.Format("已发现！坐标是：{0},{1}", intX, intY);
                MessageBox.Show(msg);

            }

        }
        #endregion

        #region 找字
        bool formFont = true;
        private void btnWord_Click(object sender, EventArgs e)
        {
            if (formFont)
            {
                Form3 fmFont = new Form3();
                formFont = false;
                fmFont.Show();
            }
            else
            {
                dm.SetDict(0, "word.txt");
                object intX, intY;
                int dm_ret = dm.FindStr(0, 0, 2000, 2000, "百度", "e10602-000000", 1.0, out intX, out intY);
                if (dm_ret < 0)
                {
                    MessageBox.Show("没找到");
                    formFont = true;
                    return;
                }
                string msg = String.Format("找到“百度”了！坐标是：{0},{1}", intX, intY);
                MessageBox.Show(msg);
            }
        }
        #endregion

        #region 截图
        private void btnScreenshot_Click(object sender, EventArgs e)
        {
            dm.SetPath("/");
            int dm_ret = dm.CapturePng(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, "screenshot.png");
            if (dm_ret == 0)
            {
                MessageBox.Show("失败啊！");
                return;
            }
            string msg = String.Format("成功截图！\n已经保存在{0}\\screenshot.png", Directory.GetCurrentDirectory());
            MessageBox.Show(msg);
            System.Diagnostics.Process.Start("screenshot.png");
        }
        #endregion

        #region 功能说明
        private void btnHelp_Click(object sender, EventArgs e)
        {
            MessageBox.Show("\"打字\"：绑定任意文本框句柄，可实现后台打字母效果。\n\"找字\"：可找指定字库内的文字位置。\n\"找图\"：可找指定的图片位置。\n\"截图\"：可截绑定句柄的窗体，默认未绑定为桌面。");
        }
        #endregion
    }
}
